package com.ruoyi.web.controller.common;

import com.google.code.kaptcha.Producer;
import com.google.code.kaptcha.impl.DefaultKaptcha;
import com.google.code.kaptcha.util.Config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import java.util.Properties;

@Configuration
public class KaptchaConfig {

    @Bean(name = "captchaProducerEasy")
    public Producer captchaProducerEasy() {
        DefaultKaptcha kaptcha = new DefaultKaptcha();
        Properties properties = new Properties();
        // 配置更易识别的参数
        properties.setProperty("kaptcha.border", "no"); // 无边框
        properties.setProperty("kaptcha.textproducer.font.color", "0,0,0"); // 黑色文字
        properties.setProperty("kaptcha.textproducer.font.size", "30"); // 较大字体
        properties.setProperty("kaptcha.textproducer.char.length", "4"); // 4个字符
        properties.setProperty("kaptcha.textproducer.font.names", "Arial,宋体"); // 清晰字体
        properties.setProperty("kaptcha.background.clear.from", "245,245,245"); // 浅灰背景
        properties.setProperty("kaptcha.background.clear.to", "255,255,255"); // 白色背景
        properties.setProperty("kaptcha.noise.impl", "com.google.code.kaptcha.impl.NoNoise"); // 无干扰线
        properties.setProperty("kaptcha.obscurificator.impl", "com.google.code.kaptcha.impl.WaterRipple"); // 轻微扭曲

        Config config = new Config(properties);
        kaptcha.setConfig(config);
        return kaptcha;
    }

    // 复写数学验证码的配置（优化可读性）
    @Bean(name = "captchaProducerMathEasy")
    public Producer captchaProducerMathEasy() {
        DefaultKaptcha kaptcha = new DefaultKaptcha();
        Properties properties = new Properties();

        // 核心优化配置
        // 核心优化配置
        properties.setProperty("kaptcha.border", "no"); // 保留边框，增强边界感
        //.setProperty("kaptcha.border.color", "105,179,90"); // 浅绿边框，柔和不刺眼
        properties.setProperty("kaptcha.textproducer.font.color", "30,30,30"); // 深灰色文字，避免纯黑刺眼
        // 增大字体大小（从36调整为48，可根据需要进一步增大）
        properties.setProperty("kaptcha.textproducer.font.size", "48");
        properties.setProperty("kaptcha.textproducer.font.names", "微软雅黑, Arial"); // 清晰字体
        // 进一步增加字符间距，避免放大后重叠
        properties.setProperty("kaptcha.textproducer.char.space", "12");
        properties.setProperty("kaptcha.background.clear.from", "245,245,245"); // 浅灰背景
        properties.setProperty("kaptcha.background.clear.to", "250,250,250"); // 更浅的灰色背景
        properties.setProperty("kaptcha.noise.impl", "com.google.code.kaptcha.impl.NoNoise"); // 去除干扰线
        // 关键：使用"NoDistortGimpyEngine"去除所有扭曲效果，保持文字平直
        properties.setProperty("kaptcha.obscurificator.impl", "com.ruoyi.framework.kaptcha.NoDistortGimpyEngine");

        // 数学验证码特有的文本生成器（默认是数字计算，保持不变）
        properties.setProperty("kaptcha.textproducer.impl", "com.ruoyi.framework.kaptcha.MathTextCreator"); // 假设原有数学文本生成器路径

        Config config = new Config(properties);
        kaptcha.setConfig(config);
        return kaptcha;
    }
}